/**
 * 
 */
package com.whf15.o2o.util;

import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.common.BitMatrix;

/** 
* @author 作者 :whfo 
* @version 创建时间：2021年5月20日 下午8:15:57 
* 类说明 
*/
public class CodeUtil {
	

	/**
	* 方法描述：   检查验证码
	* @author whfo 
	* @date 2021年9月15日 下午8:07:56 
	* @param request
	* @return
	*/
	public static boolean checkVerifyCodeActual(HttpServletRequest request) {
		String verifyCodeExpected = (String) request.getSession().getAttribute(
				com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY);
		String verifyCodeActual = HttpServletRequestUtil.getString(request, "verifyCodeActual");
		if(verifyCodeActual == null||!verifyCodeActual.equals(verifyCodeExpected)) {
			return false;
		}
		return true;
	}
	
	/**
	* 方法描述：   生成二维码工具类
	* @author whfo 
	* @date 2021年9月15日 下午7:54:46 
	* @param content
	* @param resp
	* @return
	*/
	public static BitMatrix generateQRCodeStream(String content, HttpServletResponse resp) {
		//给响应添加头部信息，主要是告诉浏览器返回的是图片流
		resp.setHeader("Cache-Control", "no-store");
		resp.setHeader("Pragma", "no-cache");
		resp.setDateHeader("Expires", 0);
		resp.setContentType("image/png");
		//设置图片的文字编码以及内边框距离
		Map<EncodeHintType, Object> hints = new HashMap<EncodeHintType, Object>();
		hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
		hints.put(EncodeHintType.MARGIN, 0);
		BitMatrix bitMatrix;
		try {
			//参数顺序分别为：编码内容，编码类型，生成图片宽度，生成图片高度，设置参数
			bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, 300, 300, hints);
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
		return bitMatrix;
		//
	}
}
